gadget: Add queue_resize/allocate/draw() functions
authorBenjamin Otte <otte@redhat.com>
Thu, 24 Dec 2015 19:33:36 +0000 (20:33 +0100)
committerBenjamin Otte <otte@redhat.com>
Mon, 11 Jan 2016 16:05:23 +0000 (17:05 +0100)
gtk/gtkcssgadget.c
gtk/gtkcssgadgetprivate.h

index dfda4030906ac5d1f610ca7aec5326f8e762e9f5..9857c463a4de6c4fe465f9713e1f3f8500df217f 100644 (file)
@@ -122,17 +122,12 @@ static void
 gtk_css_gadget_real_style_changed (GtkCssGadget      *gadget,
                                    GtkCssStyleChange *change)
 {
-  GtkCssGadgetPrivate *priv = gtk_css_gadget_get_instance_private (gadget);
-
-  if (priv->owner)
-    {
-      if (gtk_css_style_change_affects (change, GTK_CSS_AFFECTS_SIZE))
-        gtk_widget_queue_resize (priv->owner);
-      else if (gtk_css_style_change_affects (change, GTK_CSS_AFFECTS_CLIP))
-        gtk_widget_queue_allocate (priv->owner);
-      else if (gtk_css_style_change_affects (change, GTK_CSS_AFFECTS_REDRAW))
-        gtk_widget_queue_draw (priv->owner);
-    }
+  if (gtk_css_style_change_affects (change, GTK_CSS_AFFECTS_SIZE))
+    gtk_css_gadget_queue_resize (gadget);
+  else if (gtk_css_style_change_affects (change, GTK_CSS_AFFECTS_CLIP))
+    gtk_css_gadget_queue_allocate (gadget);
+  else if (gtk_css_style_change_affects (change, GTK_CSS_AFFECTS_REDRAW))
+    gtk_css_gadget_queue_draw (gadget);
 }
 
 static void
@@ -774,6 +769,31 @@ gtk_css_node_style_changed_for_widget (GtkCssNode  *node,
   _gtk_bitmask_free (changes);
 }
 
+void
+gtk_css_gadget_queue_resize (GtkCssGadget *gadget)
+{
+  g_return_if_fail (GTK_IS_CSS_GADGET (gadget));
+
+  gtk_widget_queue_resize (gtk_css_gadget_get_owner (gadget));
+}
+
+void
+gtk_css_gadget_queue_allocate (GtkCssGadget *gadget)
+{
+  g_return_if_fail (GTK_IS_CSS_GADGET (gadget));
+
+  gtk_widget_queue_allocate (gtk_css_gadget_get_owner (gadget));
+}
+
+void
+gtk_css_gadget_queue_draw (GtkCssGadget *gadget)
+{
+  g_return_if_fail (GTK_IS_CSS_GADGET (gadget));
+  
+  /* XXX: Only invalidate clip here */
+  gtk_widget_queue_draw (gtk_css_gadget_get_owner (gadget));
+}
+
 void
 gtk_css_gadget_get_border_allocation (GtkCssGadget  *gadget,
                                       GtkAllocation *allocation,
index 40efe8dfadd6310a627d3cb4b48b16de4328eb9f..ec898bd09d3dd0007c4c804c1dd99e99c50c0c23 100644 (file)
@@ -107,6 +107,10 @@ void            gtk_css_gadget_allocate                 (GtkCssGadget
 void            gtk_css_gadget_draw                     (GtkCssGadget           *gadget,
                                                          cairo_t                *cr);
 
+void            gtk_css_gadget_queue_resize             (GtkCssGadget           *gadget);
+void            gtk_css_gadget_queue_allocate           (GtkCssGadget           *gadget);
+void            gtk_css_gadget_queue_draw               (GtkCssGadget           *gadget);
+
 void            gtk_css_gadget_get_border_allocation    (GtkCssGadget           *gadget,
                                                          GtkAllocation          *allocation,
                                                          int                    *baseline);